package com.itheima.d3_time;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * SimpleDateFormat
 * 代表简单日期格式化，可以用来把日期对象、时间毫秒值格式化成我们想要的形式。
 * 时间格式： xxxx-xx-xx  xx:xx:xx
 * public SimpleDateFormat(String pattern)   创建简单日期格式化对象，并封装时间的格式
 *
 * public final String format(Date date)   将日期格式化成日期/时间字符串
 * public final String format(Object time)  将时间毫秒值式化成日期/时间字符串
 *
 * SimpleDateFormat解析字符串时间成为日期对象
 *  public Date parse(String source)  把字符串时间解析成日期对象
 */

/**
 * 时间格式的常见符号：
 *   y	年        2020-11-11 13:27:06        yyyy-MM-dd HH:mm:ss
 *   M	月        2020年11月11日 13:27:06     yyyy年MM月dd日 HH:mm:ss
 *   d	日
 *   H	时
 *   m	分
 *   s	秒
 *   EEE 星期几
 *   a   上午/下午
 */
public class Test2SimpleDateFormat {
    public static void main(String[] args) throws ParseException {
        // 目标：掌握SimpleDateFormat的使用。
        // 1、准备一些时间
        Date d = new Date();
        System.out.println(d);

        long time = d.getTime();
        System.out.println(time);

        System.out.println("========格式化之后========");

        // 2、格式化日期对象，和时间毫秒值。  格式可以去api文档里面看，EEE代表取出当前时间是星期几，a意思是取出当前时间是上午还是下午
        //public SimpleDateFormat(String pattern)   创建简单日期格式化对象，并封装时间的格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");

        //public final String format(Date date)   将日期格式化成日期/时间字符串
        String rs = sdf.format(d);
        System.out.println("系统当前时间格式化后： "+rs);

        //public final String format(Object time)  将时间毫秒值式化成日期/时间字符串
        String rs2 = sdf.format(time);
        System.out.println("系统的时间毫秒值格式化： "+rs2);

        System.out.println("------------------------------把接收到的字符串格式的时间数据，解析成能处理的日期对象-------------------------------------");

        // 目标：掌握SimpleDateFormat解析字符串时间 成为日期对象。
        // public Date parse(String source)  把接收到的字符串格式的时间数据，解析成能处理的日期对象
        String dateStr = "2022-12-12 12:12:11";
        // 1、创建简单日期格式化对象 , 指定的时间格式必须与被解析的时间格式("2022-12-12 12:12:11")一模一样，否则程序会出bug.
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //程序会担心设置的时间格式和接收到的字符串时间的格式不一样，会报错，所以抛出异常
        Date d2 = sdf2.parse(dateStr);
        System.out.println(d2);

        String s1 = sdf2.format(d2);
        System.out.println(s1);
    }
}






